package com.xrh.xdemo.api.request.queryRequest;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
import cn.hutool.core.util.StrUtil;

@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class SysRoleQueryRequest {

	@ApiModelProperty("关键词")
	private String keywords;
	
    /**主键id */
	@ApiModelProperty("主键id")
	private Long id;

	/**创建人id */
	@ApiModelProperty("创建人id")
	private Long createUserId;

	/**创建人账号 */
	@ApiModelProperty("创建人账号")
	private String createUserAccount;

	/**创建人 */
	@ApiModelProperty("创建人")
	private String createUserName;

	/**创建时间 */
	@ApiModelProperty("创建时间")
	private Date createTimeStart;

	/**创建时间 */
	@ApiModelProperty("创建时间")
	private Date createTimeEnd;

	/**最后更新人id */
	@ApiModelProperty("最后更新人id")
	private Long updateUserId;

	/**更新人账号 */
	@ApiModelProperty("更新人账号")
	private String updateUserAccount;

	/**更新人 */
	@ApiModelProperty("更新人")
	private String updateUserName;

	/**最后更新时间 */
	@ApiModelProperty("最后更新时间")
	private Date updateTimeStart;

	/**最后更新时间 */
	@ApiModelProperty("最后更新时间")
	private Date updateTimeEnd;

	/**更新版本号 */
	@ApiModelProperty("更新版本号")
	private Integer updateVersion;

	/**删除标识(0:未删除,时间戳:已经删除) */
	@ApiModelProperty("删除标识(0:未删除,时间戳:已经删除)")
	private Long delFlag;

	/**角色名称 */
	@ApiModelProperty("角色名称")
	private String roleName;

	/**角色编号 */
	@ApiModelProperty("角色编号")
	private String roleNo;

	/**备注 */
	@ApiModelProperty("备注")
	private String remark;
    
    @ApiModelProperty(value = "当前页码" )
    private Integer pageNum = 1;

    @ApiModelProperty(value = "每页数量" )
    private Integer pageSize = 10;

	 //获取查询条件,注释部分要自己填写
	public <T> QueryWrapper<T> createQuery() {
			
		QueryWrapper<T> queryWrapper = new QueryWrapper<T>();
		
		//关键词检索
		if(StrUtil.isNotBlank(keywords)) {
			queryWrapper.and(w->w.like("role_name", keywords).or().like("role_no", keywords));
		}
		
		if(id != null)
			queryWrapper.eq("id", id);

		if(createUserId != null)
			queryWrapper.eq("create_user_id", createUserId);

		if(StrUtil.isNotBlank(createUserAccount))
			queryWrapper.eq("create_user_account", createUserAccount);

		if(StrUtil.isNotBlank(createUserName))
			queryWrapper.eq("create_user_name", createUserName);

		if(createTimeStart != null)
			queryWrapper.ge("create_time", createTimeStart);

		if(createTimeEnd != null)
			queryWrapper.le("create_time", createTimeEnd);

		if(updateUserId != null)
			queryWrapper.eq("update_user_id", updateUserId);

		if(StrUtil.isNotBlank(updateUserAccount))
			queryWrapper.eq("update_user_account", updateUserAccount);

		if(StrUtil.isNotBlank(updateUserName))
			queryWrapper.eq("update_user_name", updateUserName);

		if(updateTimeStart != null)
			queryWrapper.ge("update_time", updateTimeStart);

		if(updateTimeEnd != null)
			queryWrapper.le("update_time", updateTimeEnd);

		if(updateVersion != null)
			queryWrapper.eq("update_version", updateVersion);

		if(delFlag != null)
			queryWrapper.eq("del_flag", delFlag);

		if(StrUtil.isNotBlank(roleName))
			queryWrapper.eq("role_name", roleName);

		if(StrUtil.isNotBlank(roleNo))
			queryWrapper.eq("role_no", roleNo);

		if(StrUtil.isNotBlank(remark))
			queryWrapper.eq("remark", remark);


		return queryWrapper;
	}
		
	//获取分页
   public <T> Page<T> createPage(){
	   return new Page<>(pageNum , pageSize);
   }
	   
}
